Web Storage 是瀏覽器提供的一種儲存資料的機制,允許網站在用戶的瀏覽器中本地儲存資料,而不需要使用伺服器。它包含了兩種主要的儲存技術:
LocalStorage 和 SessionStorage 的差異
LocalStorage 的基本用法
LocalStorage 提供了一些基本的方法來操作資料:
範例:儲存用戶名稱
// 儲存用戶名稱
localStorage.setItem('username', 'John');
// 取得用戶名稱
let username = localStorage.getItem('username');
console.log(username);  // 會輸出 "John"
// 刪除用戶名稱
localStorage.removeItem('username');
SessionStorage 的基本用法
SessionStorage 的操作方式與 LocalStorage 幾乎相同,只是資料在當前會話結束後會自動刪除。
範例:儲存用戶偏好設置
// 儲存用戶偏好
sessionStorage.setItem('theme', 'dark');
// 取得用戶偏好
let theme = sessionStorage.getItem('theme');
console.log(theme);  // 會輸出 "dark"
// 清空所有 session 資料
sessionStorage.clear();
範例:簡單的待辦事項應用
這是一個利用 LocalStorage 實現的簡單待辦事項應用,讓用戶可以新增事項並在頁面重新加載後仍然保留。
<!DOCTYPE html>
<html lang="zh-TW">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>待辦事項應用</title>
</head>
<body>
    <h1>我的待辦事項</h1>
    <input type="text" id="taskInput" placeholder="新增待辦事項">
    <button id="addTaskBtn">新增</button>
    <ul id="taskList"></ul>
    <script>
        const taskInput = document.getElementById('taskInput');
        const addTaskBtn = document.getElementById('addTaskBtn');
        const taskList = document.getElementById('taskList');
        // 載入本地儲存的事項
        document.addEventListener('DOMContentLoaded', loadTasks);
        // 新增待辦事項
        addTaskBtn.addEventListener('click', function() {
            const task = taskInput.value;
            if (task) {
                addTaskToDOM(task);
                saveTaskToLocalStorage(task);
                taskInput.value = '';  // 清空輸入欄
            }
        });
        function loadTasks() {
            const tasks = JSON.parse(localStorage.getItem('tasks')) || [];
            tasks.forEach(task => addTaskToDOM(task));
        }
        function addTaskToDOM(task) {
            const li = document.createElement('li');
            li.textContent = task;
            taskList.appendChild(li);
        }
        function saveTaskToLocalStorage(task) {
            const tasks = JSON.parse(localStorage.getItem('tasks')) || [];
            tasks.push(task);
            localStorage.setItem('tasks', JSON.stringify(tasks));
        }
    </script>
</body>
</html>
在這個範例中,用戶可以新增待辦事項,並且透過 LocalStorage 儲存資料。即使頁面重新載入,資料仍然會顯示。
何時使用 LocalStorage 或 SessionStorage?
在第十七天,介紹了瀏覽器的 Web Storage API,包括 LocalStorage 和 SessionStorage。這些技術可以用在儲存用戶資料並在瀏覽器中保留它們,這對於開發互動式和資料驅動的應用程式來說非常有用。